AWK এবং Shell স্ক্রিপ্টিংয়ের সমন্বয় ব্যবহারকারীদের জন্য একটি শক্তিশালী টুল প্রদান করে, যা বিভিন্ন ধরনের ডেটা প্রসেসিং এবং সিস্টেম পরিচালনায় সহায়ক। Shell কমান্ড এবং AWK এর মধ্যে ইন্টিগ্রেশন ব্যবহার করে ব্যবহারকারীরা জটিল কার্যক্রম সহজেই সম্পন্ন করতে পারেন।
Shell স্ক্রিপ্টের মধ্যে AWK ব্যবহার করা খুবই সাধারণ। Shell কমান্ডের আউটপুটকে AWK এর ইনপুট হিসেবে ব্যবহার করা যায় এবং AWK এর মাধ্যমে প্রক্রিয়া করা ডেটাকে Shell কমান্ডের মধ্যে ব্যবহার করা যেতে পারে।
|
) ব্যবহারls -l | awk '{print $9, $5}'
এই কমান্ডটি ls -l
এর আউটপুটের ফাইলের নাম এবং ফাইলের আকার প্রিন্ট করবে। ls -l
এর আউটপুটকে AWK দ্বারা প্রক্রিয়া করার জন্য |
(pipe) ব্যবহার করা হয়েছে।
Shell স্ক্রিপ্ট থেকে ভেরিয়েবল AWK এ পাঠানোর জন্য -v
অপশন ব্যবহার করা হয়।
#!/bin/bash
threshold=1000
awk -v limit="$threshold" '$5 > limit {print $9, $5}' file_list.txt
এখানে, threshold
নামে একটি Shell ভেরিয়েবল limit
নামে AWK এ পাঠানো হয়েছে। AWK স্ক্রিপ্টটি file_list.txt
ফাইলের পঞ্চম কলামের মান threshold
এর চেয়ে বড় হলে প্রিন্ট করবে।
Shell স্ক্রিপ্টের মধ্যে AWK কমান্ড লেখা এবং ব্যবহার করা যায়, যা বড় স্ক্রিপ্টে আরও কার্যকরতা যোগ করে।
#!/bin/bash
echo "Enter a filename:"
read filename
awk 'BEGIN {print "File content analysis:"}
{print "Line", NR, "has", NF, "fields."}
END {print "End of file"}' "$filename"
এই Shell স্ক্রিপ্টটি ব্যবহারকারীর কাছ থেকে একটি ফাইলের নাম ইনপুট নেয় এবং AWK এর মাধ্যমে ফাইলের প্রতিটি লাইনের ফিল্ড সংখ্যা এবং লাইন নম্বর প্রিন্ট করে।
AWK এর আউটপুটকে Shell কমান্ডের মধ্যে ব্যবহার করতে কমান্ড সাবস্টিটিউশন $()
ব্যবহার করা হয়।
total_size=$(awk '{sum += $5} END {print sum}' file_list.txt)
echo "Total file size is $total_size bytes"
এখানে, file_list.txt
ফাইলের পঞ্চম কলামের মানগুলোর যোগফল AWK ব্যবহার করে বের করা হয়েছে এবং total_size
ভেরিয়েবলে সংরক্ষিত হয়েছে।
AWK এর system()
ফাংশন ব্যবহার করে Shell কমান্ড চালানো যায়।
awk 'BEGIN {system("echo Shell command executed from AWK")}'
এই AWK স্ক্রিপ্টটি Shell কমান্ড echo
চালায় এবং আউটপুট প্রিন্ট করে।
AWK এবং Shell এর ইন্টিগ্রেশন ব্যবহারকারীদের জন্য ডেটা প্রসেসিং এবং সিস্টেম প্রশাসনের ক্ষমতা বাড়ায়। Shell কমান্ড এবং AWK একসাথে ব্যবহার করে জটিল ডেটা বিশ্লেষণ এবং স্ক্রিপ্টিং করা সহজ হয়। ব্যবহারকারীরা Shell এর আউটপুটকে AWK এর মাধ্যমে প্রক্রিয়া করতে পারেন এবং AWK এর আউটপুটকে Shell কমান্ডে ব্যবহার করতে পারেন। এই সমন্বয় AWK এবং Shell স্ক্রিপ্টিংকে আরও কার্যকর ও শক্তিশালী করে তোলে।
AWK এবং Shell স্ক্রিপ্ট একসাথে ব্যবহার করলে শক্তিশালী এবং কার্যকর ডেটা প্রক্রিয়াকরণ এবং অটোমেশন টুল তৈরি করা যায়। Shell স্ক্রিপ্টে AWK কমান্ড অন্তর্ভুক্ত করে, বড় আকারের ডেটা বিশ্লেষণ, ফিল্টারিং, এবং রিপোর্ট তৈরি করা সম্ভব। Shell এবং AWK এর ইন্টিগ্রেশন আপনাকে সহজে টেক্সট প্রসেসিং এবং ডেটা বিশ্লেষণ করতে সহায়তা করে।
simple_script.sh:
#!/bin/bash
# Data ফাইল থেকে প্রথম কলাম প্রিন্ট করা
awk '{ print $1 }' data.txt
চালানোর কমান্ড:
bash simple_script.sh
এই স্ক্রিপ্টটি data.txt
ফাইল থেকে প্রতিটি লাইনের প্রথম কলাম প্রিন্ট করবে।
Shell স্ক্রিপ্টে থাকা ভেরিয়েবল AWK-তে পাঠানোর জন্য -v
ফ্ল্যাগ ব্যবহার করা হয়।
variable_script.sh:
#!/bin/bash
name="Alice"
# Shell ভেরিয়েবল AWK-তে পাঠানো এবং ব্যবহার
awk -v user="$name" 'BEGIN { print "Hello, " user "!" }'
চালানোর কমান্ড:
bash variable_script.sh
ফলস্বরূপ:
Hello, Alice!
Shell লুপ এবং AWK একসাথে ব্যবহার করে বড় আকারের ডেটা প্রক্রিয়াকরণ সহজ করা যায়।
loop_script.sh:
#!/bin/bash
# প্রতিটি ফাইলের জন্য AWK চালানো
for file in *.txt; do
echo "Processing $file"
awk '{ print $1, $2 }' "$file"
done
চালানোর কমান্ড:
bash loop_script.sh
এই স্ক্রিপ্টটি বর্তমান ডিরেক্টরির সব .txt
ফাইলের প্রথম এবং দ্বিতীয় কলাম প্রিন্ট করবে।
Shell কমান্ডের আউটপুট সরাসরি AWK-তে পাস করা যায় |
পাইপ ব্যবহার করে।
ls -l | awk '{ print $9, $5 }'
এই কমান্ডটি ls -l
এর আউটপুট থেকে প্রতিটি ফাইলের নাম এবং সাইজ প্রিন্ট করবে।
AWK এবং Shell স্ক্রিপ্টের ইন্টিগ্রেশন ডেটা প্রক্রিয়াকরণ এবং স্ক্রিপ্টিংকে আরও শক্তিশালী এবং কার্যকর করে তোলে। Shell স্ক্রিপ্টের মধ্যে AWK ব্যবহার করে, আপনি সহজে ডেটা বিশ্লেষণ, ফিল্টারিং, এবং রিপোর্ট তৈরি করতে পারেন। Shell এবং AWK-এর সমন্বয়ে বিভিন্ন প্রয়োজনীয় কাজকে স্বয়ংক্রিয় করা সম্ভব, যা আপনার সময় এবং প্রচেষ্টাকে সাশ্রয় করে।
AWK একটি শক্তিশালী টুল যা Shell স্ক্রিপ্ট এবং কমান্ড লাইনের সাথে ব্যবহার করা যায়। অনেক সময় Shell কমান্ড চালানোর পরে AWK ব্যবহার করে সেই আউটপুটকে প্রসেস করা হয়। Shell স্ক্রিপ্টে AWK এর আউটপুট সংগ্রহ করা এবং তা ব্যবহার করার পদ্ধতি সম্পর্কে নিচে আলোচনা করা হলো।
Shell কমান্ড লাইনে AWK এর আউটপুটকে Shell ভেরিয়েবলে সংরক্ষণ করা যায়। এর জন্য কমান্ড সাবস্টিটিউশন $()
বা ব্যাকটিক্স (``) ব্যবহার করা হয়।
output=$(awk '/pattern/ {print $1}' filename.txt)
echo "The matched output is: $output"
এখানে, AWK কমান্ড filename.txt
ফাইলের প্রথম কলাম থেকে সেই লাইনের আউটপুট প্রিন্ট করে যেটিতে pattern
পাওয়া যায়। Shell ভেরিয়েবল output
এ সেই আউটপুট সংরক্ষণ করা হয় এবং তারপর echo
ব্যবহার করে তা প্রদর্শন করা হয়।
AWK এর আউটপুট সরাসরি পরবর্তী Shell কমান্ডের ইনপুট হিসেবে ব্যবহার করা যেতে পারে।
file=$(ls | awk '/\.txt$/ {print}')
echo "Text file found: $file"
এখানে, ls
কমান্ডের আউটপুট AWK এর মাধ্যমে ফিল্টার করা হয়েছে যা .txt
দিয়ে শেষ হওয়া ফাইলগুলিকে খুঁজে বের করে এবং সেই ফাইলের নাম file
ভেরিয়েবলে সংরক্ষণ করা হয়েছে।
Shell স্ক্রিপ্টের মধ্যে AWK কমান্ড ব্যবহার করে বড় ধরনের ডেটা প্রক্রিয়াকরণ করা যায় এবং তার আউটপুট অন্য কাজের জন্য ব্যবহার করা যায়।
#!/bin/bash
# AWK কমান্ড থেকে আউটপুট সংগ্রহ করা
line_count=$(awk 'END {print NR}' filename.txt)
echo "Total number of lines in the file: $line_count"
# শর্তসাপেক্ষ ক্রিয়াকলাপ
if [ "$line_count" -gt 100 ]; then
echo "The file has more than 100 lines."
else
echo "The file has 100 or fewer lines."
fi
এখানে, AWK ব্যবহার করে filename.txt
ফাইলের মোট লাইন সংখ্যা নির্ণয় করা হয়েছে এবং সেই সংখ্যা line_count
ভেরিয়েবলে সংরক্ষণ করা হয়েছে। পরে, সেই ভেরিয়েবলের মানের উপর ভিত্তি করে শর্তসাপেক্ষ ক্রিয়াকলাপ করা হয়েছে।
AWK এর আউটপুটকে সরাসরি অন্য Shell কমান্ডের সাথে পাইপলাইন ব্যবহার করে প্রসেস করা যায়।
awk '/pattern/ {print $1}' filename.txt | sort | uniq > output.txt
এখানে, AWK ব্যবহার করে filename.txt
থেকে নির্দিষ্ট প্যাটার্ন অনুযায়ী প্রথম কলাম প্রিন্ট করা হয়েছে। তারপর সেই আউটপুট sort
এবং uniq
কমান্ডের মাধ্যমে ফিল্টার করে output.txt
ফাইলে সংরক্ষণ করা হয়েছে।
Shell কমান্ডে AWK এর আউটপুট ব্যবহার করে আপনি জটিল ডেটা প্রক্রিয়াকরণ সহজে করতে পারেন। AWK এবং Shell কমান্ড একসাথে ব্যবহার করলে আপনার স্ক্রিপ্টিং এবং ডেটা বিশ্লেষণের ক্ষমতা বৃদ্ধি পায়। এই পদ্ধতিতে, Shell ভেরিয়েবলে AWK এর আউটপুট সংরক্ষণ, পাইপলাইন ব্যবহার এবং আউটপুটকে অন্যান্য কমান্ডে ফিল্টার করা সম্ভব।
AWK সহ UNIX এবং UNIX-ভিত্তিক অপারেটিং সিস্টেমে pipes এবং redirects ব্যবহার করে বিভিন্ন ধরণের ডেটা প্রক্রিয়াকরণ করা যায়। এই সুবিধাগুলি ব্যবহার করে, বিভিন্ন কমান্ডের আউটপুটকে অন্য একটি প্রোগ্রামের ইনপুট হিসেবে পাঠানো যায় এবং আউটপুটকে ফাইলে সংরক্ষণ করা যায়।
Pipes ব্যবহার করে একটি কমান্ডের আউটপুট সরাসরি অন্য একটি কমান্ডের ইনপুট হিসেবে ব্যবহার করা যায়। এটি একাধিক কমান্ড একত্রে যুক্ত করে জটিল ডেটা প্রক্রিয়াকরণকে সহজ করে।
cat data.txt | awk '{ print $1, $2 }'
এখানে, cat
কমান্ডের আউটপুট data.txt
ফাইলের কনটেন্ট প্রিন্ট করে এবং সেই আউটপুটটি awk
কমান্ডের ইনপুট হিসেবে কাজ করে। AWK প্রথম এবং দ্বিতীয় কলাম প্রিন্ট করে।
অন্যান্য উদাহরণ:
ls -l | awk '{ print $9, $5 }'
এটি ls -l
কমান্ডের আউটপুট থেকে প্রতিটি ফাইলের নাম এবং ফাইলের সাইজ প্রিন্ট করে।
Redirects ব্যবহার করে কমান্ডের আউটপুটকে ফাইলে সংরক্ষণ করা যায় বা ফাইল থেকে ইনপুট নেওয়া যায়।
>
চিহ্ন ব্যবহার করে আউটপুট একটি ফাইলে রিডাইরেক্ট করা হয়। যদি ফাইলটি ইতিমধ্যেই থাকে, তবে এটি ওভাররাইট হবে।
awk '{ print $1, $2 }' data.txt > output.txt
এখানে, data.txt
ফাইলের প্রথম এবং দ্বিতীয় কলাম প্রিন্ট করা হয় এবং আউটপুট output.txt
ফাইলে সংরক্ষণ করা হয়।
>>
চিহ্ন ব্যবহার করে আউটপুট একটি ফাইলে যোগ করা যায়। এটি ফাইলের আগের ডেটা মুছে দেয় না বরং নতুন ডেটা যোগ করে।
awk '{ print $1, $2 }' data.txt >> output.txt
এখানে, data.txt
এর আউটপুট output.txt
ফাইলে পূর্ববর্তী ডেটার সাথে যোগ করা হবে।
<
চিহ্ন ব্যবহার করে একটি ফাইলের ডেটা কমান্ডে ইনপুট হিসেবে ব্যবহার করা যায়।
awk '{ print $1 }' < data.txt
এখানে, data.txt
ফাইলটি ইনপুট হিসেবে ব্যবহার করা হয়েছে এবং প্রথম কলাম প্রিন্ট করা হয়েছে।
আপনি একসাথে pipes এবং redirects ব্যবহার করে জটিল ডেটা প্রক্রিয়াকরণ করতে পারেন।
cat data.txt | awk '{ sum += $2 } END { print "Total:", sum }' > result.txt
এখানে, cat
কমান্ডের আউটপুট AWK কমান্ডে পাঠানো হয়েছে এবং AWK তে দ্বিতীয় কলামের যোগফল result.txt
ফাইলে সংরক্ষণ করা হয়েছে।
Pipes এবং Redirects AWK এবং অন্যান্য কমান্ড লাইন টুলের সাথে ডেটা প্রক্রিয়াকরণকে আরও সহজ এবং কার্যকর করে তোলে। Pipes ব্যবহার করে বিভিন্ন কমান্ডের আউটপুটকে ইনপুট হিসেবে ব্যবহার করা যায় এবং Redirects ব্যবহার করে আউটপুটকে ফাইলে সংরক্ষণ বা ফাইল থেকে ইনপুট নেওয়া যায়। এই বৈশিষ্ট্যগুলি ব্যবহারকারীদের ডেটা বিশ্লেষণ এবং প্রক্রিয়াকরণে দ্রুত এবং নমনীয়ভাবে কাজ করতে সহায়তা করে।
AWK এবং Shell Script একত্রে ব্যবহার করা হয় সাধারণত বড় আকারের ডেটা প্রক্রিয়াকরণ, টেক্সট ফাইল বিশ্লেষণ, এবং রিপোর্ট তৈরি করার জন্য। Shell Script এর সাথে AWK এর সমন্বয়, স্ক্রিপ্টিং এবং ডেটা প্রসেসিংয়ে আরও কার্যকর এবং ক্ষমতাশালী সমাধান প্রদান করে।
AWK এবং Shell Script একত্রে ব্যবহার করতে কয়েকটি উপায় রয়েছে:
#!/bin/bash
# একটি ফাইলের নাম ইনপুট হিসেবে নেওয়া
filename="data.txt"
# AWK কমান্ড ব্যবহার করে ফাইলের প্রতিটি লাইনের প্রথম ও তৃতীয় কলাম প্রিন্ট করা
awk '{print $1, $3}' $filename
এখানে, Shell Script এর মধ্যে সরাসরি AWK কমান্ড ব্যবহার করে data.txt
ফাইলের প্রথম এবং তৃতীয় কলাম প্রিন্ট করা হয়েছে।
ধরা যাক, আমাদের একটি AWK স্ক্রিপ্ট ফাইল process.awk
রয়েছে:
process.awk:
{
if ($2 > 50) {
print $1, $2
}
}
এটি Shell Script থেকে কল করা যায় নিম্নরূপ:
run_script.sh:
#!/bin/bash
# ফাইলের নাম ইনপুট
filename="data.txt"
# AWK স্ক্রিপ্ট ফাইল চালানো
awk -f process.awk $filename
এখানে, process.awk
স্ক্রিপ্টটি data.txt
ফাইল প্রসেস করবে এবং যেসব লাইনের দ্বিতীয় কলামের মান ৫০ এর বেশি, সেগুলি প্রিন্ট করবে।
Shell Script এর ভেরিয়েবল AWK এ পাঠানোর জন্য -v
অপশন ব্যবহার করা হয়।
run_script.sh:
#!/bin/bash
# Shell Script এ একটি ভেরিয়েবল ডিফাইন করা
threshold=100
# AWK এ Shell Script এর ভেরিয়েবল পাঠানো এবং ব্যবহার করা
awk -v limit=$threshold '$3 > limit {print $1, $3}' data.txt
এখানে, threshold
ভেরিয়েবলটি $3
কলামের মান পরীক্ষা করার জন্য AWK এ পাঠানো হয়েছে। যদি তৃতীয় কলামের মান threshold
এর চেয়ে বড় হয়, তবে সেই লাইন প্রিন্ট হবে।
AWK এবং Shell Script একত্রে ব্যবহার করা বড় আকারের ডেটা প্রক্রিয়াকরণের জন্য একটি শক্তিশালী সমাধান। এটি স্ক্রিপ্টিং এবং ডেটা বিশ্লেষণের কাজকে সহজ এবং কার্যকর করে তোলে। Shell Script থেকে AWK কল করা, AWK স্ক্রিপ্ট ফাইল ব্যবহার করা, এবং Shell Script এর ভেরিয়েবল AWK এ পাঠানো একত্রে স্ক্রিপ্টিংয়ের দক্ষতা বৃদ্ধি করে।
common.read_more